﻿#define _CRT_SECURE_NO_WARNINGS

#include"func.h"
using namespace std;


//int main()
//{
//	//可以通过反汇编观察程序是否展开
//	// 有call func语句就是没有展开，没有就是展开了
//	func(1,1);
//	return 0;
//}

void func(int x = 0)
{
	cout << "void func(int x = 0)" << endl;
}

void func(int* ptr)
{
	cout << "void func(int* ptr)" << endl;
}

int main()
{
	func(0);

	// 本想通过f(NULL)调⽤指针版本的func(int*)函数，
	// 但是由于NULL被定义成0，调⽤了func(int x)，因此与程序的初衷相悖。
	func(NULL);

	//强制类型转化为int*的指针
	func((int*)NULL);

	//使⽤nullptr定义空指针可以避免类型转换的问题，因为nullptr只能被
	//隐式地转换为指针类型，⽽不能被转换为整数类型
	func(nullptr);

	void* pa = NULL;
	int* pb = NULL;
	pb = (int*)pa;

	return 0;
}